package com.byb.server.service.dto;


import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.util.Objects;

/**
 * A DTO for the Product entity.
 */
public class ProductDTO implements Serializable {

    private Long id;

    private String productName;

    private String productImg;

    private String overallScore;

    private String amountOfIndemnificationSocre;

    private String ensureScopeSocre;

    private String claimsSettlementSocre;

    private String convenientServicetSocre;

    private String strichenClaimTimes;

    private String mildClaimTimes;

    private String strichenNum;

    private String mildNum;

    private String stricheProbability;

    private String mildProbability;

    private String dcRate;

    private String expertOverallScore;

    private String purchaseLink;

    private Long insurerId;

    private String insurerCorporateName;

    private Long typesOfInsuranceId;

    private String typesOfInsuranceTypesOfInsuranceName;

    private Set<WordKeyDTO> wordKeys = new HashSet<>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductImg() {
        return productImg;
    }

    public void setProductImg(String productImg) {
        this.productImg = productImg;
    }

    public String getOverallScore() {
        return overallScore;
    }

    public void setOverallScore(String overallScore) {
        this.overallScore = overallScore;
    }

    public String getAmountOfIndemnificationSocre() {
        return amountOfIndemnificationSocre;
    }

    public void setAmountOfIndemnificationSocre(String amountOfIndemnificationSocre) {
        this.amountOfIndemnificationSocre = amountOfIndemnificationSocre;
    }

    public String getEnsureScopeSocre() {
        return ensureScopeSocre;
    }

    public void setEnsureScopeSocre(String ensureScopeSocre) {
        this.ensureScopeSocre = ensureScopeSocre;
    }

    public String getClaimsSettlementSocre() {
        return claimsSettlementSocre;
    }

    public void setClaimsSettlementSocre(String claimsSettlementSocre) {
        this.claimsSettlementSocre = claimsSettlementSocre;
    }

    public String getConvenientServicetSocre() {
        return convenientServicetSocre;
    }

    public void setConvenientServicetSocre(String convenientServicetSocre) {
        this.convenientServicetSocre = convenientServicetSocre;
    }

    public String getStrichenClaimTimes() {
        return strichenClaimTimes;
    }

    public void setStrichenClaimTimes(String strichenClaimTimes) {
        this.strichenClaimTimes = strichenClaimTimes;
    }

    public String getMildClaimTimes() {
        return mildClaimTimes;
    }

    public void setMildClaimTimes(String mildClaimTimes) {
        this.mildClaimTimes = mildClaimTimes;
    }

    public String getStrichenNum() {
        return strichenNum;
    }

    public void setStrichenNum(String strichenNum) {
        this.strichenNum = strichenNum;
    }

    public String getMildNum() {
        return mildNum;
    }

    public void setMildNum(String mildNum) {
        this.mildNum = mildNum;
    }

    public String getStricheProbability() {
        return stricheProbability;
    }

    public void setStricheProbability(String stricheProbability) {
        this.stricheProbability = stricheProbability;
    }

    public String getMildProbability() {
        return mildProbability;
    }

    public void setMildProbability(String mildProbability) {
        this.mildProbability = mildProbability;
    }

    public String getDcRate() {
        return dcRate;
    }

    public void setDcRate(String dcRate) {
        this.dcRate = dcRate;
    }

    public String getExpertOverallScore() {
        return expertOverallScore;
    }

    public void setExpertOverallScore(String expertOverallScore) {
        this.expertOverallScore = expertOverallScore;
    }

    public String getPurchaseLink() {
        return purchaseLink;
    }

    public void setPurchaseLink(String purchaseLink) {
        this.purchaseLink = purchaseLink;
    }

    public Long getInsurerId() {
        return insurerId;
    }

    public void setInsurerId(Long isurerId) {
        this.insurerId = isurerId;
    }

    public String getInsurerCorporateName() {
        return insurerCorporateName;
    }

    public void setInsurerCorporateName(String isurerCorporateName) {
        this.insurerCorporateName = isurerCorporateName;
    }

    public Long getTypesOfInsuranceId() {
        return typesOfInsuranceId;
    }

    public void setTypesOfInsuranceId(Long typesOfInsuranceId) {
        this.typesOfInsuranceId = typesOfInsuranceId;
    }

    public String getTypesOfInsuranceTypesOfInsuranceName() {
        return typesOfInsuranceTypesOfInsuranceName;
    }

    public void setTypesOfInsuranceTypesOfInsuranceName(String typesOfInsuranceTypesOfInsuranceName) {
        this.typesOfInsuranceTypesOfInsuranceName = typesOfInsuranceTypesOfInsuranceName;
    }

    public Set<WordKeyDTO> getWordKeys() {
        return wordKeys;
    }

    public void setWordKeys(Set<WordKeyDTO> wordKeys) {
        this.wordKeys = wordKeys;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        ProductDTO productDTO = (ProductDTO) o;
        if(productDTO.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), productDTO.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "ProductDTO{" +
            "id=" + getId() +
            ", productName='" + getProductName() + "'" +
            ", productImg='" + getProductImg() + "'" +
            ", overallScore='" + getOverallScore() + "'" +
            ", amountOfIndemnificationSocre='" + getAmountOfIndemnificationSocre() + "'" +
            ", ensureScopeSocre='" + getEnsureScopeSocre() + "'" +
            ", claimsSettlementSocre='" + getClaimsSettlementSocre() + "'" +
            ", convenientServicetSocre='" + getConvenientServicetSocre() + "'" +
            ", strichenClaimTimes='" + getStrichenClaimTimes() + "'" +
            ", mildClaimTimes='" + getMildClaimTimes() + "'" +
            ", strichenNum='" + getStrichenNum() + "'" +
            ", mildNum='" + getMildNum() + "'" +
            ", stricheProbability='" + getStricheProbability() + "'" +
            ", mildProbability='" + getMildProbability() + "'" +
            ", dcRate='" + getDcRate() + "'" +
            ", expertOverallScore='" + getExpertOverallScore() + "'" +
            ", purchaseLink='" + getPurchaseLink() + "'" +
            "}";
    }
}
